package com.itfenghuang.day13;

import com.itfenghuang.test.A00_消费者;
import com.itfenghuang.test.A00_生产者;

public class A01_生产者和消费者 {
    public static void main(String[] args) {
        /**
         *
         *  也叫等待唤醒机制
         *
         *  1.概述
         *      十分经典的多线程协作模式
         *      生产者和消费者问题就是这两类问题
         *      1). 生产者生产数据
         *      2). 消费者消费数据
         *
         *  2.Objeck中的方法
         *        public final void wait() 导致当前线程等待
         *        直到另一个线程对象的notify()方法或notifyAll()方法
         *        public final void notify​()唤醒正在等待对象监视器的单个线程。
         *        public final void notifyAll​()唤醒正在等待对象监视器的所有线程
         *
         *  3.生产者和消费者案列
         *      三个类,  厨子(生产者) 吃货(消费者) 桌子(共享数据区)
         *      注意事项:
         *          吃货线程和厨子线程必须使用同步代码块包裹起来
         *          锁对象 唯一
         *          等待唤醒 wati()
         *      套路:
         *          先有一个死循环
         *          加上同步代码块,锁对象唯一
         *          判断共享数据是否结束  结束
         *          判断共享数据是否结束  没有结束
         *
         *      创建多线程的三种方式,Thread中的常用方法,
         *      线程安全问题(同步代码块,同步方法,lodck锁)
         *      死锁
         *      等待唤醒机制,生产者和消费者
         *      线程的生命周期
         *
         *
         */

        //测试厨子和吃货线程
        A02_Foodie food = new A02_Foodie();
        A02_Cook cook = new A02_Cook();
        food.start();
        cook.start();




    }
}
